package com.rightsidetech.system.mapper;

import com.rightsidetech.system.dtos.dto.StoreTreeDTO;
import com.rightsidetech.system.dtos.request.store.SysStoreInfoReq;
import com.rightsidetech.system.dtos.request.store.UserStoreReq;
import com.rightsidetech.system.dtos.response.RegionTreeResp;
import com.rightsidetech.system.dtos.response.store.*;
import com.rightsidetech.system.entity.store.SysStoreInfo;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;

public interface SysStoreInfoMapper {
    int deleteByPrimaryKey(Long id);

    int insert(SysStoreInfo record);

    int insertSelective(SysStoreInfo record);

    SysStoreInfo selectByPrimaryKey(Long id);

    SysStoreInfo selectByPrimaryKeyByStatus(Long id);

    int updateByPrimaryKeySelective(SysStoreInfo record);

    int updateByPrimaryKey(SysStoreInfo record);

    List<SysStoreInfoResp> list(SysStoreInfoReq request);

    String getMaxStoreNo();

    SysStoreInfo selectByStoreName(String storeName);

    SysStoreInfo selectByPhoneNo(String connectWay);

    SysStoreInfoResp findDetails(@Param("id") Long id,@Param("agentInfoId") Long agentInfoId);

    SysStoreInfo selectByAgentInfoId(@Param("id")Long id, @Param("agentInfoId") Long agentInfoId);

    SysStoreInfo nearestOneStore(UserStoreReq req);

    List<StoreResp> findByAgentInfoId(@Param("sysAgentInfoId") Long sysAgentInfoId,@Param("search") String search,@Param("status") Byte status);

    StoreResp findOne(@Param("id") Long id);

    SysStoreOrderDetailResp findOrderDetailByStoreId(@Param("storeId") Long storeId);

    List<StoreSearchResp> search(@Param("content") String content,@Param("agentInfoId") Long agentInfoId,@Param("status") String status,@Param("areaId") Long areaId);

    List<TdCommodityAgentAppStoreListResp> storeOrderStatisListByAgentId(@Param("agentInfoId") Long agentInfoId);

    StoreResp getStoreByCode(@Param("storeCode") String storeCode);

    Long findStoreNumByAreaId(@Param("areaId") Long areaId);

    List<ActStoreResp> selectStoreActResp();

    List<RegionTreeResp> allStore();
    List<StoreTreeDTO> allStoreByStoreId(Long agentId);

    Long findStoreNumByAgentId(@Param("agentId") Long agentId);

    List<Long> selectInfoIdByAreaIds(List<Long> list);

    List<Long> selectInfoIdByAgentIds(List<Long> list);

    SysStoreOrderDetailResp selectStoreDetailByStoreName(@Param("storeName") String storeName);

    SysStoreInfo findLastNearByLonAndLat(@Param("longitude") BigDecimal longitude, @Param("latitude") BigDecimal latitude);

    Long updateAreaIdByAgentId(@Param("areaId") Long areaId, @Param("agentId") Long agentId);

    SysStoreOrderDetailResp selectByStoreId(@Param("storeId") Long storeId);

    StoreNamInfoResp selectName(Long storeId);

    List<SysStoreInfo> selectByAgentIdList(List<Long> list);

    List<Long> selectAgentIdByAreaIds(List<Long> list);

    Long selectCountByAgentId(List<Long> list);

    Long selectAgentIdByStoreId(Long storeInfoId);

    StoreResp selectStoreInfoById(Long id);
}